package net.qiqbframework.modelling.command.fetching;

import net.qiqbframework.modelling.domain.Aggregate;

/**
 * 命令模型
 */
public interface AggregateCommandModel<C, A> {
    /**
     * 命令类型
     *
     * @return
     */
    Class<C> commandType();

    String commandName();

    /**
     * 聚合名称
     *
     * @return
     */
    String aggregateName();

    /**
     * 聚合类型
     *
     * @return
     */
    Class<A> aggregateRootType();

    Aggregate<A> obtainAggregate(C commandObject);


}
